// no 6 and no 8
#include "Characters.h"
#include <iostream>
#include <string.h>
#include <stdio.h>
Characters::Characters()
{
	strcpy(this -> str, "");
}
Characters::Characters(const char *s)
{
	strcpy(this -> str, s);
}
Characters::Characters(const Characters &ch)
{
	strcpy(this -> str, ch.str);
}
Characters::Characters(const Characters *ch)
{
	strcpy(this -> str, ch -> str);
}
void Characters::Print(void) const
{
	puts(this -> str);
}
bool Characters::operator == (const Characters &ch)
{
	return !strcmp(this -> str, ch.str);
}
bool Characters::operator == (const Characters *ch)
{
	return !strcmp(this -> str, ch -> str);
}
bool Characters::operator == (const char *s)
{
	return !strcmp(this -> str, s);
}
bool operator == (const char *s, const Characters &ch)
{
	return !strcmp(s, ch.str);
}
bool Characters::operator < (const Characters &ch)
{
	return strlen(this -> str) < strlen(ch.str);
}
bool Characters::operator < (const Characters *ch)
{
	return strlen(this -> str) < strlen(ch -> str);
}
bool Characters::operator < (const char *s)
{
	return strlen(this -> str) < strlen(s);
}
bool operator < (const char *s, const Characters &ch)
{
	return strlen(s) < strlen(ch.str);
}
bool Characters::operator <= (const Characters &ch)
{
	return strlen(this -> str) <= strlen(ch.str);
}
bool Characters::operator <= (const Characters *ch)
{
	return strlen(this -> str) <= strlen(ch -> str);
}
bool Characters::operator <= (const char *s)
{
	return strlen(this -> str) <= strlen(s);
}
bool operator <= (const char *s, const Characters &ch)
{
	return strlen(s) <= strlen(ch.str);
}
bool Characters::operator > (const Characters &ch)
{
	return strlen(this -> str) > strlen(ch.str);
}
bool Characters::operator > (const Characters *ch)
{
	return strlen(this -> str) > strlen(ch -> str);
}
bool Characters::operator > (const char *s)
{
	return strlen(this -> str) > strlen(s);
}
bool operator > (const char *s, const Characters &ch)
{
	return strlen(s) > strlen(ch.str);
}
bool Characters::operator >= (const Characters &ch)
{
	return strlen(this -> str) >= strlen(ch.str);
}
bool Characters::operator >= (const Characters *ch)
{
	return strlen(this -> str) >= strlen(ch -> str);
}
bool Characters::operator >= (const char *s)
{
	return strlen(this -> str) >= strlen(s);
}
bool operator >= (const char *s, const Characters &ch)
{
	return strlen(s) >= strlen(ch.str);
}
Characters Characters::operator + (const Characters &ch)
{
	Characters st = Characters();
	strcat(st.str, this -> str);
	strcat(st.str, ch.str);
	return st;
}
Characters Characters::operator + (const char *s)
{
	Characters st = Characters();
	strcat(st.str, this -> str);
	strcat(st.str, s);
	return st;
}
Characters operator + (const char *s, Characters &ch)
{
	Characters st = Characters();
	strcat(st.str, s);
	strcat(st.str, ch.str);
	return st;
}
using namespace std;
int main()
{
	Characters s = Characters("Hello");
	Characters s1 = Characters(" world!");
	Characters s2 = "Hello" + s1;
	s2.Print();
	return 0;
}